/**
 * ID生成工具类 - 提供全局唯一标识符生成服务
 *
 * 开发人员：徐少洋
 * 开发时间：2025-11-05 至 2025-11-08
 * 模块职责：生成各种业务场景下的唯一标识符，确保系统数据的唯一性和可追溯性
 *
 * 技术要点：
 * - 线程安全的随机数生成机制
 * - 时间戳和随机数组合的唯一性保证
 * - 高并发环境下的性能优化
 * - 订单号格式标准化设计
 * - 防重复和防碰撞算法设计
 *
 * 开发故事：负责系统核心ID生成机制的设计和实现，与支付系统深度配合，确保订单号的全球唯一性和业务可追溯性。
 */
package com.pbl.util;

import java.security.SecureRandom;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public final class IdGenerator {
    private static final SecureRandom RANDOM = new SecureRandom();
    private static final DateTimeFormatter TS = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");

    private IdGenerator() {}

    /**
     * 生成全局唯一的商户订单号（时间戳 + 随机数）
     * 格式：yyyyMMddHHmmssSSS + 6位随机数
     * 确保全球唯一性和防碰撞性
     */
    public static String generateOutTradeNo() {
        String ts = LocalDateTime.now().format(TS);
        int rand = 100000 + RANDOM.nextInt(900000);
        return ts + rand;
    }
}
